using AiQiuQuan.Sport.Model.Enums;
using System.ComponentModel.DataAnnotations;

namespace AiQiuQuan.Sport.Model.Models
{
    /// <summary>
    /// 退款单新增dto
    /// </summary>
    public class RefundOrderAddDto
    {
        /// <summary>
        /// 支付订单ID
        /// </summary>
        [Required(ErrorMessage = "支付订单ID必填")]
        public Guid PayOrderId { get; set; }

        /// <summary>
        /// 支付商户订单号
        /// </summary>
        [Required(AllowEmptyStrings = false, ErrorMessage = "支付商户订单号必填")]
        public string OrderNo { get; set; }

        /// <summary>
        /// 退款商户订单号
        /// </summary>
        [Required(AllowEmptyStrings = false, ErrorMessage = "退款商户订单号必填")]
        public string RefundNo { get; set; }

        /// <summary>
        /// 第三方退款ID
        /// </summary>
        [Required(AllowEmptyStrings = true, ErrorMessage = "第三方退款ID必填")]
        public string RefundId { get; set; }

        /// <summary>
        /// 业务类型：1场馆场地订单、5活动订单、10比赛订单
        /// </summary>
        [Required(ErrorMessage = "业务类型：1场馆场地订单、5活动订单、10比赛订单必填")]
        public BusinessTypeEnum BusinessType { get; set; }

        /// <summary>
        /// 退款方式：1微信、2支付宝、3场馆会员卡
        /// </summary>
        [Required(ErrorMessage = "退款方式：1微信、2支付宝、3场馆会员卡必填")]
        public PayTypeEnum RefundType { get; set; }

        /// <summary>
        /// 申请退款金额
        /// </summary>
        [Required(ErrorMessage = "申请退款金额必填")]
        public decimal ApplyAmount { get; set; }

        /// <summary>
        /// 实际退款金额
        /// </summary>
        [Required(ErrorMessage = "实际退款金额必填")]
        public decimal RefundAmount { get; set; }

        /// <summary>
        /// 服务费
        /// </summary>
        [Required(ErrorMessage = "服务费必填")]
        public decimal ServiceChargeAmount { get; set; }

        /// <summary>
        /// 退款状态：0退款中、1退款成功、2退款失败
        /// </summary>
        [Required(ErrorMessage = "退款状态：0退款中、1退款成功、2退款失败必填")]
        public RefundStateEnum State { get; set; }
    }
}